package com.googlecode.placesapiclient.client.service;

import com.googlecode.placesapiclient.client.argument.ArgumentMap;
import com.googlecode.placesapiclient.client.connection.proxy.ProxyConfiguration;
import com.googlecode.placesapiclient.client.entity.Place;
import com.googlecode.placesapiclient.client.entity.PlaceDetails;
import com.googlecode.placesapiclient.client.entity.PlacePrediction;
import com.googlecode.placesapiclient.client.exception.ErrorCodeException;
import org.json.JSONException;

import java.util.List;

/**
 */
public interface PlacesService {

    List<Place> placeNearbySearchRequest(ArgumentMap argumentMap) throws ErrorCodeException;

    List<Place> placeTextSearchRequest(ArgumentMap argumentMap) throws ErrorCodeException;

    List<Place> placeRadarSearchRequest(ArgumentMap argumentMap) throws ErrorCodeException;

    PlaceDetails placeDetailsRequest(ArgumentMap argumentMap) throws ErrorCodeException;

    List<PlacePrediction> placeAutocompleteRequest(ArgumentMap argumentMap) throws ErrorCodeException, JSONException;

    List<PlacePrediction> placeQueryAutocompleteRequest(ArgumentMap argumentMap) throws ErrorCodeException, JSONException;

    String getApiKey();

    void setProxyConfiguration(ProxyConfiguration proxyConfiguration);

    void init();

}
